# 构建阶段
FROM node:20.19-alpine as build-stage

# 设置工作目录
WORKDIR /app

# 复制本地sysadmin目录下的所有文件
COPY sysadmin /app

# 安装依赖
RUN npm install --verbose

# 构建应用程序
RUN npm run build -- --mode=production

# 生产阶段
FROM nginx:1.25-alpine as production-stage

# 安装Git和Node.js（用于定时拉取更新）
RUN apk add --no-cache git nodejs npm

# 设置工作目录
WORKDIR /app

# 克隆指定子目录（用于定时拉取更新）
RUN git init && \
    git remote add origin https://gitee.com/dnui_zjs/nodejs_harmony_vue.git && \
    git config core.sparseCheckout true && \
    echo "sysadmin/" >> .git/info/sparse-checkout && \
    git pull --depth 1 origin master && \
    mv sysadmin/* . && \
    rm -rf sysadmin

# 安装依赖（用于定时拉取更新）
RUN npm install --verbose

# 复制构建好的文件到 Nginx 静态文件目录
COPY --from=build-stage /app/dist /usr/share/nginx/html

# 复制自定义 Nginx 配置文件
COPY _docker/server/nginx.conf /etc/nginx/conf.d/default.conf

# 暴露端口
EXPOSE 80

# 创建定时拉取和重新构建脚本
RUN echo '#!/bin/sh' > /app/pull.sh && \
    echo 'echo "开始执行拉取脚本..."' >> /app/pull.sh && \
    echo 'git pull --depth 1 origin master' >> /app/pull.sh && \
    echo 'echo "安装依赖..."' >> /app/pull.sh && \
    echo 'npm install --verbose' >> /app/pull.sh && \
    echo 'echo "构建应用程序..."' >> /app/pull.sh && \
    echo 'npm run build -- --mode=production' >> /app/pull.sh && \
    echo 'echo "复制构建文件到Nginx..."' >> /app/pull.sh && \
    echo 'cp -r /app/dist/* /usr/share/nginx/html/' >> /app/pull.sh && \
    echo 'echo "拉取脚本执行完成!"' >> /app/pull.sh && \
    chmod +x /app/pull.sh

# 设置定时任务
RUN echo '0 * * * * /app/pull.sh' > /etc/crontabs/root

# 启动应用和定时任务（启动时先执行一次拉取脚本）
CMD crond && /app/pull.sh && nginx -g "daemon off;"